# 1、导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service
from time import sleep, strftime

# 2、实例化浏览器对象
driver_path = "C:/Users/Lenovo/AppData/Local/Programs/Python/Python310/geckodriver.exe"
service = Service(executable_path=driver_path)
driver = webdriver.Firefox(service=service)

# TODO 窗口截图
# 3、需求：打开注册A页面
'''
driver.get('file:///E:/project/learn-python/html%E5%9F%BA%E7%A1%80/c-frame.html')
driver.switch_to.frame('frame')
driver.find_element(By.ID, 'zc1').click()

handles = driver.window_handles
driver.switch_to.window(handles[-1])

# ① 填写注册信息
driver.find_element(By.ID, 'username_1').send_keys('admin-1')
driver.find_element(By.ID, 'password_1').send_keys('123456')

# ② 截图保存
driver.get_screenshot_as_file('./窗口截图.png')

# ②-扩展：使用时间戳防止图片重名被覆盖
now_time = strftime('%Y%m%d_%H%M%S')
driver.get_screenshot_as_file('./截图.png_{}'.format(now_time))
driver.close()

# ②-扩展：给元素截图
driver.switch_to.window(handles[0])
driver.switch_to.frame('frame')

btn = driver.find_element(By.XPATH, '//*[@value="注册"]')
btn.screenshot('./注册按钮.png')
'''
# TODO 验证码
# 3、需求：利用 cookie 绕过百度登录
'''
准备工作：
        http://www.baidu.com -> 登录 -> 右键（检查）-> application(存储) -> cookie(找到 BDUSS ）
        使用固定的键名，组装数据：{'name': 'BDUSS', 'value': 'JGam8weUFiaUVXa3VJYnp...AAAAAAPot7Wb6Le1mcm'}
'''
driver.get('http://www.baidu.com')
driver.maximize_window()               # 窗口最大化
# cookie绕过登录
# a. 整理关键cookie信息为字典数据（字典数据的key必须是 name 和 value）
cookie = {'name': 'BDUSS',
          'value': 'JGam8weUFiaUVXa3VJYnpCVWdqfkZTRkw1VjJ-ZE1RLUZOZEVCYkFlMzZ1aFJuSUFBQUFBJCQAAAAAAAAAAAEAAAA~8qTFu6izvmNjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPot7Wb6Le1mcm'}

# b. 调用方法，添加cookie信息
driver.add_cookie(cookie)

# c. 刷新页面 -> 发送cookie信息给服务器进行验证 （不要忘记刷新）
driver.refresh()



'''
注意：
     1、本地浏览器中登录的账号，不能退出，否则 cookie 信息过期，需重新获取
     2、不同项目能够进行登录功能绕过的 cookie 字段信息不同，需要问开发
     3、利用 cookie 绕过登录，不能对登录功能本身进行测
     4、个别项目如果绕过登录，可能需要添加多个 cookie 字段
'''